Conventional computer systems typically maintain an internal clock (e.g., a system clock) to keep track of the date and the time of day. Accurate time and date measurements are required in a wide variety of applications, e.g., managing and tracking electronic mail (email), timing back-ups of data on a network, synchronizing communications between clients and servers, managing multimedia teleconferences, etc. Time clocks maintained by most computer systems tend to be subject to a certain amount of error, or “drift”. Therefore, it becomes necessary to synchronize such clocks to an accurate reference clock at various times to thereby increase accuracy in applications.
A number of solutions have been developed to synchronize the system clocks of computer systems. In one solution the user of a computer system manually adjusts the clock whenever the clock appears to have drifted. This technique, however, is both inconvenient for the user and subject to its own inaccuracies.
A more sophisticated solution makes use of a server operating on a network, such as the Internet. The server computer system maintains a highly accurate time clock, such as an atomic clock, and provides accurate time readings to other computer systems on the network using a communication protocol such as Network Time Protocol (NTP) or Simple Network Time Protocol (SNTP). In this type of arrangement, a client computer system may send a request for an accurate time reading via the Internet to an NTP or SNTP server when it is necessary to synchronize its internal clock. The request may be routed to one of a number of secondary servers that function as intermediaries between the client systems requiring clock synchronization and a primary NTP or SNTP server. The use of such secondary servers is generally intended to reduce the loading on the primary NTP or SNTP server. A primary NTP or SNTP server may be maintained, for example, by a government entity, while access to the primary NTP or SNTP servers is regulated by secondary NTP or SNTP servers maintained, for example, by universities and business enterprises, for use by their students and employees, respectively.
The known solutions, however, suffer from certain drawbacks and disadvantages. An exemplary problem associated with known NTP and SNTP based clock synchronization techniques is that the secondary servers may tend to become overloaded by synchronization requests. This problem may be more common in those secondary servers that serve large networks. A large business enterprise, for example, may maintain a secondary server that serves hundreds or thousands of client systems. Thus, the occurrence of a large number of synchronization requests within a short period of time may significantly slow down operation of the secondary server. This effect is undesirable, especially if the secondary server is also responsible for other services.
Other problems associated with known clock synchronization techniques are inconvenience to the user and disruption of the user's activities. Synchronization of a computer system's time clock is typically performed under the control of network application software executing on the computer system, which operates the computer system's communication device to access a network server. In a home environment, in which access to the Internet is typically provided through the use of a modem, the network software must perform a modem dial out routine to establish a connection to the Internet. It is undesirable for a computer system to initiate a dial out on its own whenever clock synchronization is required, as doing so may be disruptive to the user. Consequently, network software products are commonly configured to synchronize the time clock only when it is determined that an active network connection exists. This approach has the disadvantage that, in a home situation, the time clock is synchronized only when the user actually accesses the Internet, which may not be sufficiently frequent to maintain the accuracy of the clock.